package cn.xopencode.recordservice.rpc.sf6machine;

import cn.xopencode.common.framework.vo.CommonResult;
import cn.xopencode.common.framework.vo.PageResult;
import cn.xopencode.recordservice.rpc.robotroom.dto.AdminRecordPageDTO;
import cn.xopencode.recordservice.rpc.sf6machine.dto.*;
import cn.xopencode.recordservice.rpc.sf6machine.vo.*;

import javax.validation.Valid;

/**
 * SF6气体密度继电器巡检记录 RPC
 */
public interface Sf6MachineRecordRpc {

    /**
     * 新增SF6气体密度继电器巡检记录
     *
     * @param createDTO
     * @return
     */
    CommonResult<Sf6MachineRecordCreateVO> createSf6MachineRecord(Sf6MachineRecordCreateDTO createDTO);

    /**
     * 新增 SF6气体密度继电器巡检记录 中的下一组数据
     * @param createDTO
     * @return
     */
    CommonResult<Integer> createSf6MachineRecordNextLine(Sf6MachineRecordNextCreateDTO createDTO);

    /**
     * 获得SF6气体密度继电器巡检记录分页
     *
     * @param pageDTO
     * @return
     */
    CommonResult<PageResult<Sf6MachineRecordPageVO>> pageSf6MachineRecord(Sf6MachineRecordDTO pageDTO);

    /**
     * 根据记录id获取SF6气体密度继电器巡检记录详情
     * @param id
     * @return
     */
    CommonResult<Sf6MachineRecordVO> getSf6MachineRecordById(String id);

    /**
     * 根据记录标识、下一组的排序，获取SF6气体密度继电器巡检记录中下一组的详细
     * @param recordCode
     * @param recordSeq
     * @return
     */
    CommonResult<Sf6MachineRecordNextVO> getSf6MachineRecordNextById(String recordCode, Integer recordSeq);

    /**
     *  更新 SF6气体密度继电器巡检记录
     * @param updateDTO
     * @return
     */
    CommonResult<Integer> updateSf6MachineRecord(Sf6MachineRecordUpdateDTO updateDTO);

    /**
     * 更新 SF6气体密度继电器巡检记录 中的下一组数据
     * @param nextUpdateDTO
     * @return
     */
    CommonResult<Integer> updateSf6MachineRecordNextLine(Sf6MachineRecordNextUpdateDTO nextUpdateDTO);

    /**
     * 处理 SF6气体密度继电器巡检记录 中的异常，在巡检记录中只是改变状态
     * @param recordDetailId
     * @return
     */
    CommonResult<Integer> dealSf6MachineRecordLineException(String recordDetailId);

    /**
     *  后台--根据查询条件 分页获取所有的SF6气体密度继电器巡检记录
     * @param pageDTO
     * @return
     */
    CommonResult<PageResult<Sf6MachineRecordAdminPageVO>> getAdminPageSf6MachineRecordLine(AdminRecordPageDTO pageDTO);
}
